﻿using System;
using System.Data;
using System.Data.SqlClient;
using Onshi.POS.AccesoDatos.Interfaces;

namespace Onshi.POS.AccesoDatos
{
    public class ServicioDatosDomicilios : ServicioDatosBase, IServicioDatosDomicilio
    {
        #region Contructores

        public ServicioDatosDomicilios()
            : base()
        {
        }

        #endregion

        #region Metodos

        public DataSet Domicilios_DevolverTodos()
        {
            try
            {
                var cm = new SqlCommand("Domicilios_DevolverTodos", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                var da = new SqlDataAdapter(cm);
                var ds = new DataSet();
                da.Fill(ds);
                return ds;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public DataSet Domicilios_DevolverPorId(Int32 idDomicilio)
        {
            try
            {
                var cm = new SqlCommand("Domicilio_DevolverPorId", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.Add(new SqlParameter("@IdDomicilio", idDomicilio));
                var da = new SqlDataAdapter(cm);
                var ds = new DataSet();
                da.Fill(ds);
                return ds;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public Int32 Domicilios_Insertar(Int32 idTipoDomicilio, Int32 idBarrio, String calle, short numero, byte piso, String departamento, String observacion, bool esPredeterminado)
        {
            try
            {
                var cm = new SqlCommand("Domicilio_Insertar", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.Add(new SqlParameter("@IdTipoDomicilio", idTipoDomicilio));
                cm.Parameters.Add(new SqlParameter("@IdBarrio", idBarrio));
                cm.Parameters.Add(new SqlParameter("@calle", calle));
                cm.Parameters.Add(new SqlParameter("@numero", numero));
                cm.Parameters.Add(new SqlParameter("@piso", piso));
                cm.Parameters.Add(new SqlParameter("@departamento", departamento));
                cm.Parameters.Add(new SqlParameter("@observacion", observacion));
                cm.Parameters.Add(new SqlParameter("@esPredeterminado", esPredeterminado));
                Conexion.Open();
                return Convert.ToInt16(cm.ExecuteScalar());
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public void Domicilios_Modificar(Int32 idDomicilio, Int32 idTipoDomicilio, Int32 idBarrio, String calle, short numero, byte piso, String departamento, String observacion, bool esPredeterminado)
        {
            try
            {
                var cm = new SqlCommand("Domicilio_Modificar", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.Add(new SqlParameter("@idDomicilio", idDomicilio));
                cm.Parameters.Add(new SqlParameter("@IdTipoDomicilio", idTipoDomicilio));
                cm.Parameters.Add(new SqlParameter("@IdBarrio", idBarrio));
                cm.Parameters.Add(new SqlParameter("@calle", calle));
                cm.Parameters.Add(new SqlParameter("@numero", numero));
                cm.Parameters.Add(new SqlParameter("@piso", piso));
                cm.Parameters.Add(new SqlParameter("@departamento", departamento));
                cm.Parameters.Add(new SqlParameter("@observacion", observacion));
                cm.Parameters.Add(new SqlParameter("@esPredeterminado", esPredeterminado));
                Conexion.Open();
                cm.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public void Domicilios_Eliminar(Int32 idDomicilio)
        {
            try
            {
                var cm = new SqlCommand("Domicilio_Eliminar", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.Add(new SqlParameter("@IdDomicilio", idDomicilio));
                Conexion.Open();
                cm.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        #endregion
    }
}
